#ifndef _NAME_H_
#define _NAME_H_
#include "ast/exprType.h"
#include "ast/exprContextType.h"
#include "AstTypes.h"
class IVisitor;
class Name;
typedef QSharedPointer<Name> NamePtr;

class Name: public exprType
{
public:
    explicit Name(const QString& id, int ctx, bool reserved, int nodeId=-1);
    virtual ~Name();
    
    
    QString id();
    void setId(const QString& id);
    
    int ctx();
    void setCtx(int ctx);
    
    bool reserved();
    void setReserved(bool reserved);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    QString _id;
    int _ctx;
    bool _reserved;
};




#endif